iT邦幫忙

0

[ YOLO ] 在windows安裝YOLO darknet - GPU 2022 更新

  • 分享至 

  • xImage
  •  

繼上次在windows上建置AlexeyAB Darknet 已經是兩年前了,隨這最近YOLOV7釋出,看到AlexeyAB也更新到最新版本,最近也手癢來重新建置,拜讀一下台灣之光 王博士 的YOLOV7,網路上比較多YOLO教學較多是base在Linux系統上,在windows上 利用Visual Studio 安裝幾經波折,以下紀錄。

windows : Win10
GPU : GeForce GTX 950M & GeForce GTX 1050Ti
CUDA : CUDA 11.8
cudnn : 8.6
YOLO : Darknet AlexeyAB fork github

下載/安裝OpenCV

https://sourceforge.net/projects/opencvlibrary/files/opencv-win/
直接選擇最新的安裝,安裝基本上就無腦下一步
紀錄安裝路徑e.g : D:\opencv
https://ithelp.ithome.com.tw/upload/images/20221011/20115086RqKfjBVv9w.png
https://ithelp.ithome.com.tw/upload/images/20221011/201150860ksLfR0mHN.png

下載Darknet

從AlexeyAB 的Github下載Darknet ZIP https://github.com/AlexeyAB/darknet
解壓縮

利用VS 2022 編譯

進入build\darknet 資料夾
https://ithelp.ithome.com.tw/upload/images/20200615/201150865AJ8FaXTWp.png

接下來分兩個部分,依據有沒有要使用GPU來決定要編譯兩個檔案
使用GPU → darknet.sln & yolo_cpp_dll.sln
不使用GPU → darknet_no_gpu.sln & yolo_cpp_dll_no_gpu.sln
以下以使用GPU作為安裝範例,如不使用GPU跳過CUDA相關設定即可以。

利用Visual studio 2022開啟darknet.sln。
在方案總管darknet上按右鍵,選擇property(屬性)。
https://ithelp.ithome.com.tw/upload/images/20221011/20115086AJ9GDYIiBa.png
將Configuration選擇Release,Platform選擇x64。
https://ithelp.ithome.com.tw/upload/images/20200615/20115086bEf8O5IKUE.png

VC++ Directories → Include Directories(Include 目錄) → 依據opencv安裝位置設定路徑
須設定

  • build/include
  • build/include/opencv2
    此處為
  • D:\PyData\opencv\build\include
  • D:\PyData\opencv\build\include\opencv2
    https://ithelp.ithome.com.tw/upload/images/20221011/20115086kriJ6VMMuc.png

VC++ Directories → Library Directories(程式庫目錄)→ 依據opencv安裝位置設定路徑

  • VS 2015/2017 需使用vc14/lib
  • VS 2019/2022 需使用vc15/lib
  • 此處為 D:\PyData\opencv\build\x64\vc15\lib
    https://ithelp.ithome.com.tw/upload/images/20221011/20115086BQuJJZfzA6.png

Linker (連結器)→ Input(輸入) → Additional Dependencies(其他相依性) → 加入opencv_world340.lib

  • 檢查opencv\build\x64\vc15\libopencv_worldXXX.lib,隨安裝版本不同,可能為不同數字,此處為libopencv_world340.lib
    https://ithelp.ithome.com.tw/upload/images/20221011/20115086MPqZlWTDwL.png

============↓ GPU 設定 ↓============
注意 : 不同版本darknet 所需求之CUDA/Cudnn 版本不同,需要安裝對應版本
https://ithelp.ithome.com.tw/upload/images/20221011/20115086XvzMJ948vj.png

此處使用版本

  • CUDA : 11.8
  • cudnn : 8.6
  • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8
  • C:\Program Files\NVIDIA GPU Computing Toolkit\cudnn-windows-x86_64-8.6.0.163_cuda11-archive

將cudnn的三個資料夾bin、include、lib中的檔案(全數檔案)
複製到cuda的安裝目錄:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0 相應的資料夾內

  • cudnn\cuda\bin* → CUDA\v11.8\bin*
  • cudnn\cuda\include* → CUDA\v11.8\include*
  • cudnn\cuda\lib\x64* → CUDA\v11.8\lib\x64*

CUDA C/C++ → CUDA Toolkit Custom Dir → 依據CUDA安裝位置設定路徑

  • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8
    https://ithelp.ithome.com.tw/upload/images/20221011/20115086yL99sfeBYH.png

============↑ GPU 設定 ↑============

在按下Visual Studio 2022 的Debugger 進行編譯
https://ithelp.ithome.com.tw/upload/images/20200615/20115086W6NVBY2uH6.png
如果編譯成功,就會在x64資料夾下多一個darknet.exe檔案
https://ithelp.ithome.com.tw/upload/images/20200615/2011508600aY376XEp.png

讓python 程式調用

利用Visual studio yolo_cpp_dll.sln。再次執行上述步驟編譯。← 生成DLL檔案,可以讓pyhton呼叫使用。
如果編譯成功,就會在x64資料夾下多一個yolo_cpp_dll.dll檔案

  • 編譯到最後出現以下畫面即是成功。
    https://ithelp.ithome.com.tw/upload/images/20200615/20115086c0xHzCSjQU.png
    在編譯yolo_cpp_dll到最後會出現以下警告視窗是正常的,不要慌張。
    https://ithelp.ithome.com.tw/upload/images/20200615/20115086LUv85N8rp2.png

缺少相依dll

完成後進行簡單測試(測試方法如下),顯示缺少了幾個dll,

  • zlibwapi.dll

缺少的dll可以到 Nvidia doc 下載,解壓縮後將zlibwapi.dll丟到darknet.exe相同資料夾

  • opencv_world430.dll
    至對應的opencv lib 複製,此處為D:\PyData\opencv\build\x64\vc15\lib

測試Darknet

下載weight檔,依相應的需求到AlexeyAB Github 上下載weight檔案。
在這邊我會習慣建立一個'weights'資料夾,將所有weight檔案放在這個資料夾,方便後續管理。

開啟Terminal 進入x64資料夾,就可以測試簡單範例。
.\darknet.exe detect .\cfg\yolov3-tiny.cfg .\weights\yolov3-tiny.weights .\data\dog.jpg
.\darknet.exe detect .\cfg\yolov3.cfg .\weights\yolov3.weights .\data\dog.jpg
.\darknet.exe detect .\cfg\yolov4.cfg .\weights\yolov4.weights .\data\dog.jpg

如果想要使用自己的.data檔
.\darknet.exe detector test .\obj.data .\yolov3-tiny.cfg .\weights\yolov3-tiny.weights .\data\dog.png

https://ithelp.ithome.com.tw/upload/images/20200615/20115086g0Ic8PyMB3.pnghttps://ithelp.ithome.com.tw/upload/images/20200615/20115086eWfTzm83Nj.png

想要針對Video測試也可以
./darknet detector demo cfg/coco.data cfg/yolov3.cfg weights/yolov3.weights .\data\mission-impossible-fallout-2018-official-trailer-paramount-pictures.mp4
https://ithelp.ithome.com.tw/upload/images/20200615/20115086vyTTFbV49B.png
https://ithelp.ithome.com.tw/upload/images/20200615/201150868xFcXnte4m.png

使用python呼叫yolo_cpp_dll.dll使用時,須將以下的dll放入同一個資料夾。(詳後補
https://ithelp.ithome.com.tw/upload/images/20200615/20115086NUSpJAMQ1v.png

training指令
.\darknet.exe detector train .\obj.data .\yolov3-tiny.cfg
\


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
sunnyyao37
iT邦新手 5 級 ‧ 2023-02-06 09:49:50

您好:
請教如果我不使用GPU且不用VS code,但是用PyCharm,那可以安裝Darknet嗎?要如何安裝?謝謝!!!

crowntail iT邦新手 4 級 ‧ 2023-03-08 21:44:26 檢舉

您好 如果您要用python 直接完成也可以喔!!!
直接import github裡的 darknet.py
就可以直接使用
network, class_names, class_colors = darknet.load_network(
args.config_file,
args.data_file,
args.weights,
batch_size=args.batch_size
)

https://github.com/AlexeyAB/darknet/blob/master/darknet_images.py

我要留言

立即登入留言